﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PsTFS.Provider
{
    public class MethodeProvider
    {
        //public void information()
        //{
        //    #region WORKITEM
        //    // Vérification si parcour des workitem
        //    if ("WORKITEM".Equals(com1, StringComparison.OrdinalIgnoreCase) || "WI".Equals(com1, StringComparison.OrdinalIgnoreCase))
        //    {

        //        int result = 0;
        //        if (int.TryParse(com2, out result))
        //        {
        //            WorkItem wi = witstore.GetWorkItem(result);
        //            WriteItemObject(wi, path, true);
        //        }
        //        else if ("TYPE".Equals(com2, StringComparison.OrdinalIgnoreCase))
        //        {
        //            #region TYPE
        //            if (com3 != string.Empty)
        //            {
        //                #region Recherche les workitems du type demandé
        //                string where = Context.GetContext().Project != String.Empty ? " where [System.TeamProject] = '" + Context.GetContext().Project + "'" : String.Empty;
        //                where = where != string.Empty ? where + " AND [System.WorkitemType] = '" + com3 + "'" : " where [System.WorkitemType] = '" + com3 + "'";
        //                WorkItemCollection wic = witstore.Query("Select [System.ID] from WorkItem " + where);
        //                List<StructureWorkitem> list = ConvertItemsToWI(wic, false);
        //                WriteItemObject(list, path, true);
        //                #endregion Recherche les workitems du type demandé
        //            }
        //            else
        //            {
        //                #region Récupére les type de WI
        //                List<StructureWorkitemType> listWorkitemType = new List<StructureWorkitemType>();
        //                VersionControlServer vcs = Methode_Service.VersionControlServer();
        //                if (Context.GetContext().Project == string.Empty)
        //                {
        //                    ProjectCollection projects = witstore.Projects;
        //                    foreach (Project project in projects)
        //                    {
        //                        WorkItemTypeCollection witc = project.WorkItemTypes;
        //                        foreach (WorkItemType wit in witc)
        //                        {
        //                            var t = from u in listWorkitemType
        //                                    where u.Name == wit.Name
        //                                    select u as StructureWorkitemType;
        //                            if (t.ToList().Count == 0)
        //                            {
        //                                StructureWorkitemType swt = new StructureWorkitemType() { Name = wit.Name };
        //                                listWorkitemType.Add(swt);
        //                            }
        //                        }
        //                    }
        //                }
        //                else
        //                {
        //                    WorkItemTypeCollection witc = witstore.Projects[Context.GetContext().Project].WorkItemTypes;
        //                    foreach (WorkItemType wit in witc)
        //                    {
        //                        listWorkitemType.Add(new StructureWorkitemType() { Name = wit.Name });
        //                    }
        //                }
        //                WriteItemObject(listWorkitemType, path, true);
        //                #endregion Récupére les type de WI
        //            }
        //            #endregion TYPE
        //        }
        //        else if ("State".Equals(com2, StringComparison.OrdinalIgnoreCase))
        //        {
        //            #region State
        //            if (com3 != string.Empty)
        //            {
        //                #region Recherche les workitems du state demandé
        //                string where = Context.GetContext().Project != String.Empty ? " where [System.TeamProject] = '" + Context.GetContext().Project + "'" : String.Empty;
        //                where = where != string.Empty ? where + " AND [System.State] = '" + com3 + "'" : " where [System.State] = '" + com3 + "'";
        //                WorkItemCollection wic = witstore.Query("Select [System.ID] from WorkItem " + where);
        //                List<StructureWorkitem> list = ConvertItemsToWI(wic, false);
        //                WriteItemObject(list, path, true);
        //                #endregion Recherche les workitems du state demandé
        //            }
        //            else
        //            {
        //                List<string> listState = new List<string>();
        //                VersionControlServer vcs = Methode_Service.VersionControlServer();
        //                if (Context.GetContext().Project == string.Empty)
        //                {
        //                    ProjectCollection projects = witstore.Projects;
        //                    foreach (Project project in projects)
        //                    {
        //                        WorkItemTypeCollection witc = project.WorkItemTypes;
        //                        foreach (WorkItemType wit in witc)
        //                        {
        //                            AllowedValuesCollection avc = wit.FieldDefinitions["State"].AllowedValues;
        //                            foreach (string s in avc)
        //                            {
        //                                if (!listState.Contains(s))
        //                                    listState.Add(s);
        //                            }
        //                        }
        //                    }
        //                }
        //                else
        //                {
        //                    WorkItemTypeCollection witc = witstore.Projects[Context.GetContext().Project].WorkItemTypes;
        //                    foreach (WorkItemType wit in witc)
        //                    {
        //                        AllowedValuesCollection avc = wit.FieldDefinitions["State"].AllowedValues;
        //                        foreach (string s in avc)
        //                        {
        //                            if (!listState.Contains(s))
        //                                listState.Add(s);
        //                        }
        //                    }
        //                }
        //                WriteItemObject(listState, path, true);
        //            }
        //            #endregion State
        //        }
        //        else
        //        {
        //            string where = Context.GetContext().Project != String.Empty ? " where [System.TeamProject] = '" + Context.GetContext().Project + "'" : String.Empty;
        //            WorkItemCollection wic = witstore.Query("Select [System.ID] from WorkItem " + where);
        //            List<StructureWorkitem> list = ConvertItemsToWI(wic, true);
        //            WriteItemObject(list, path, true);
        //        }
        //    }
        //    #endregion WORKITEM
        //    #region SOURCECONTROL
        //    else if ("SOURCECONTROL".Equals(com1, StringComparison.OrdinalIgnoreCase) || "SC".Equals(com1, StringComparison.OrdinalIgnoreCase))
        //    {
        //        List<StructureSC> list = ConvertItemsToList(Methode.GetElementsByPath(GetPathTFS(path), recurse == true ? RecursionType.Full : RecursionType.OneLevel));
        //        WriteItemObject(list, path, true);
        //    }
        //    #endregion SOURCECONTROL
        //    #region TEAMPROJECT
        //    else if ("TEAMPROJECT".Equals(com1, StringComparison.OrdinalIgnoreCase) || "TP".Equals(com1, StringComparison.OrdinalIgnoreCase))
        //    {
        //        ProjectCollection pc = witstore.Projects;
        //        List<StructureProject> listStructureProjet = GetElementsByProject(pc);
        //        WriteItemObject(listStructureProjet, path, true);
        //    }
        //    #endregion TEAMPROJECT
        //    #region BUILD
        //    else if ("BUILD".Equals(com1, StringComparison.OrdinalIgnoreCase) || "BL".Equals(com1, StringComparison.OrdinalIgnoreCase))
        //    {
        //        if ("STATUS".Equals(com2, StringComparison.OrdinalIgnoreCase) || "ST".Equals(com2, StringComparison.OrdinalIgnoreCase))
        //        {
        //            List<string> status = new List<string>();
        //            status.Add("Failed");
        //            status.Add("InProgress");
        //            status.Add("NotStarted");
        //            status.Add("PartiallySucceeded");
        //            status.Add("Stopped");
        //            status.Add("Succeeded");
        //            if (status.Contains(com3))
        //            {
        //                IBuildServer bs = Methode_Service.BuildServer();
        //                IBuildDetail[] listBuild = bs.QueryBuilds(Context.GetContext().Project);
        //                List<StructureBuild> listretour = new List<StructureBuild>();
        //                List<StructureBuild> list = ConvertItemsToBuild(listBuild);
        //                foreach (StructureBuild sb in list)
        //                {
        //                    BuildStatus encour = (BuildStatus)Enum.Parse(typeof(BuildStatus), com3, true);
        //                    if (sb.Status == encour)
        //                    {
        //                        listretour.Add(sb);
        //                    }
        //                }
        //                WriteItemObject(listretour, path, true);
        //            }
        //            else
        //            {
        //                WriteItemObject(status, path, true);
        //            }
        //        }
        //        else
        //        {
        //            IBuildServer bs = Methode_Service.BuildServer();
        //            IBuildDetail[] listBuild = bs.QueryBuilds(Context.GetContext().Project);
        //            List<StructureBuild> list = ConvertItemsToBuild(listBuild);
        //            WriteItemObject(list, path, true);
        //        }
        //    }
        //    #endregion BUILD
        //    #region MEMBERPROJECT
        //    else if ("MEMBERPROJECT".Equals(com1, StringComparison.OrdinalIgnoreCase) || "MP".Equals(com1, StringComparison.OrdinalIgnoreCase))
        //    {
        //        List<Groups> lg = new List<Groups>();
        //        lg = Methode.GetMembersProject(Context.GetContext().Project);
        //        if (!string.IsNullOrEmpty(com2))
        //        {
        //            var lm = from Groups m in lg
        //                     where m.DisplayName.Equals(com2, StringComparison.OrdinalIgnoreCase)
        //                     select m.Members;

        //            WriteItemObject(lm, path, true);
        //        }
        //        else
        //        {
        //            WriteItemObject(lg, path, true);
        //        }
        //    }
        //    #endregion MEMBERPROJECT
        //}
    }
}
